# 变量的有效范围称为变量的作用域
# 1.局部作用域和全局作用域
# ①局部作用域：在函数内部定义的变量,只能在函数内部访问
def test1():
    number1 = 11
    print(number1)


test1()
# print(numbers)    # 报错

# ②全局变量：在整个程序范围内起作用，不受函数范围的影响
# 注意：在函数内部可以访问全局变量但不能修改
number2 = 22


def test2():
    print(number2)
    # number2 =2    # 报错 不能在函数内部修改全局变量


test2()

# 2.global和nonlocal关键字
# 函数内部无法直接修改全局变量和外层嵌套函数变量,可以通过global和nonlocal关键字修饰变量间接修改
# ①global关键字:将局部变量声明为全局变量,便可以在函数内部修改全局变量
# 语法：global 变量
number3 = 33


def test3():
    global number3
    number3 = 0  # 修改全局变量number3的值
    print(number3)  # 0


test3()


# ②nonlocal关键字：实现在局部作用域中修改外部函数中的变量
# 语法：nonlocal 变量
def test4():
    a = 0

    def test5():
        nonlocal a
        a = 1
        print(a)  # 1

    test5()

    print(a)  # 1


test4()
